package com.wb.code09集合.练习;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * @author 黄衡熙
 * @version 1.0
 */
/*
* // 定义一个用户类User,属性:id、name、age,实现以下功能,每个功能一个方法
// 1.添加用户信息,提示用户循环输入用户的信息,存储到ArrayList集合中
// 2.查询所有用户信息,输出集合中所有用户的信息
// 3.根据编号查询指定用户信息
// 4.根据编号修改指定用户信息
// 5.根据编号删除指定用户信息*/
public class Test07_用户管理系统 {

    private static Scanner sc = new Scanner(System.in);
    private static List<User> userList = new ArrayList<>();

    public static void main(String[] args) {
        showMun();
    }
       public static void showMun() {
            System.out.println("***********************欢迎使用用户管理系统***********************");
            System.out.print("请选择服务(1.添加用户 2.查询所有用户 3.根据编号查询用户 4.修改用户 5.删除用户 6.退出):");
            int choice = sc.nextInt();
            switch (choice) {
                case 1:
                    addUser();
                    break;
                case 2:
                    findAll();
                    break;
                case 3:
                    findById();
                    break;
                case 4:
                    modifyUser();
                    break;
                case 5:
                    deleteUser();
                    break;
                case 6:
                    System.out.println("提示:退出系统");
                    break;
                default:
                    System.out.println("提示:输入有误");
                    showMun();
            }
        }


    /**
     * 添加用户信息,提示用户循环输入用户的信息,存储到ArrayList集合中
     */
    public static void addUser() {

        while (true) {
            System.out.print("请输入用户id:");
            String id = sc.next();
            boolean idExists = false;
            for (User u : userList) {
                if (u.getId().equals(id)) {
                    idExists = true;
                    break;
                }
            }
            if (idExists) {
                System.out.println("该id已存在，请重新输入！");
                continue;
            }
            System.out.print("请输入用户名:");
            String name = sc.next();
            System.out.print("请输入用户年龄:");
            int age = sc.nextInt();
            User user = new User(id, name, age);
            userList.add(user);
            System.out.println("用户添加成功");
            System.out.print("请选择(1继续添加2退出):");
            int choice = sc.nextInt();
            if (choice != 1) {
                break;
            }
        }
        showMun();
    }

    /**
     * 查询所有用户信息,输出集合中所有用户的信息
     */
    public static void findAll() {
        System.out.println(userList);
         showMun();
    }

    /**
     * 根据编号查询指定用户信息
     */
    public static void findById() {
        System.out.print("请输入用户编号:");
        String id = sc.next();
        boolean idExists = false;
        for (User u : userList) {
            if (u.getId().equals(id)) {
                idExists = true;
                System.out.println(u);
                break;
            }
        }
        if (!idExists) {
            System.out.println("用户不存在");
        }
        showMun();
    }

    /**
     * 根据编号修改指定用户信息
     */
    public static void modifyUser() {
        System.out.print("请输入要修改的用户编号:");
        String id = sc.next();
        boolean idExists = false;
        for (User u : userList) {
            if (u.getId().equals(id)) {
                idExists = true;
                System.out.println("当前用户信息为:"+u);
                System.out.print("请输入新的用户id:");
                String newId = sc.next();
                u.setId(newId);
                System.out.print("请输入新的用户名:");
                String newName = sc.next();
                u.setName(newName);
                System.out.print("请输入新的用户年龄:");
                int newAge = sc.nextInt();
                u.setAge(newAge);
                System.out.println("修改成功后的信息为:"+u);
                break;
            }
        }
        if (!idExists) {
            System.out.println("用户不存在");
        }
        showMun();
    }

    /**
     * 根据编号删除指定用户信息
     */
    public static void deleteUser() {
        System.out.print("请输入用户编号:");
        String id = sc.next();
        boolean idExists = false;
        for (User u : userList) {
            if (u.getId().equals(id)) {
                idExists = true;
                userList.remove(u);
                System.out.println("用户删除成功");
                break;
            }
        }
        if (!idExists) {
            System.out.println("用户不存在");
        }
        showMun();
    }
}

/**
 * 定义一个用户类User,属性:id、name、age,实现以下功能,每个功能一个方法
 */
class User {
    private String id;
    private String name;
    private int age;

    public User() {
    }

    public User(String id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}